// 校验类型
// 1) typeof 不能校验 对象 数组 object null
// 2) instanceof 谁是谁的实例
// 3) Object.prototype.toString.call 不能判断实例 [object Object]
// 4) constructor 判断当前是谁构造出来的

function isType(type){ // 变量私有化
  return function(content){
    return Object.prototype.toString.call(content) === `[object ${type}]`;
  }
}

let types = ['String', 'Boolean', 'Number', 'Null', 'Undefined'];
let utils = {};
for (let i = 0; i < types.length; ++i) {
  let type = types[i];
  utils['is' + types[i]] = isType(type); //isType高阶函数 返回一个函数
}
let flag = utils.isNumber('hello');
console.log(flag);
